package com.qdlc.p2p.dal.mybatis.model.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.qdlc.p2p.dal.dto.CardRule;
import com.qdlc.p2p.dal.model.CardRuleModel;

/**
 * 卡片规则表操作
 *
 * @author Kaiju Zhao
 * @version V1.0.0
 * @date 2016-05-06
 */
public interface CardRuleMapper {

    /**
     * 新增卡片规则信息
     *
     * @param cardRule
     * @author Kaiju Zhao
     */
    void insert(CardRule cardRule);

    /**
     * 删除卡片规则(伪删除），将卡片规则是否删除状态置为删除
     *
     * @param id
     * @author Kaiju Zhao
     */
    void delete(long id);

    /**
     * 修改卡片规则信息
     *
     * @param cardRule
     * @return
     * @author Kaiju Zhao
     */
    int update(CardRule cardRule);

    /**
     * 修改卡片规则状态
     *
     * @param status
     * @param preStatus
     * @param id
     * @return
     * @author Kaiju Zhao
     */
    int updateStatus(@Param("status")int status, @Param("preStatus")int preStatus, @Param("id")long id);

    /**
     * 根据id查询卡片规则信息
     *
     * @param id
     * @return
     * @author Kaiju Zhao
     */
    CardRule findById(long id);

    /**
     * 查询已启用的片规则信息列表
     *
     * @return
     * @author Kaiju Zhao
     */
    List<CardRule> findUsableCardRules();

    /**
     * 分页获取卡片规则信息列表
     *
     * @param model
     * @return
     * @author Kaiju Zhao
     */
    List<CardRule> list(CardRuleModel model);

    /**
     * 判断是否存在该卡片规则（平台只存在一个类型和状态相同的卡片规则）
     *
     * @param id
     * @param type
     * @param status
     * @return
     * @author Kaiju Zhao
     */
    int existCardRule(@Param("id")long id, @Param("type")int type, @Param("status")int status);

}